heim
Cross-platform library for system information fetching
heim
is an ongoing attempt to create the best tool for system information fetching
(ex., CPU, memory, disks or processes stats) in the Rust crates ecosystem.
It targets to have at least the same functionality as
psutil,
gopsutil or
oshi eventually.
Why should I use heim
instead of {crate-name}?
See the comparison page.
Background
heim
has a few key goals which define its development and public interface:
-
Async-first.
Async support in Rust has become a first class citizen and it's about time to use it. While many things here do not require async right now, it will help create better and faster implementations later. -
Cross-platform.
Any code fromheim
should just work on any supported platforms. OS-specific things do exist, but the API design forces users to pay attention to them. -
Modular design.
Thanks to the variousfutures
combinators, it's up to you to choose the exact information you want to get. -
Idiomatic and easy to use.
Technical notes
heim
requires stable Rust 1.36+,
but examples, tests and benchmarks use the async_await
feature and therefore require a nightly
compiler.
Of course, you can use heim
without the async
keyword,
just be aware that it is used by the examples.
heim
is using std::future::Future
and it is expected that users understand
how futures work, how to use them, and what differences there are
between futures versions 0.1
and 0.3/std::future::Future
.
It is not a project goal to provide any kind of information about how to
combine heim
with actix
, hyper
, tide
, or any other Rust crate.
At the moment, heim
is async runtime agnostic, but in the future it may need to depend on runtime
specific features. Note that if this becomes the case, it is likely that the required runtime(s) will be
compatible with the runtime crate.
Users may want to consider this fact during development. See #75 for more info.
Platform support
At the moment, heim
is in MVP phase, which means that there is only only partial support
for Tier 1
platforms (Linux, macOS, and Windows for i686
and x86_64
).
You can check the GitHub projects page
for more information.
Please be aware that at the moment, heim
(and all sub-crates)
has the "experimental" status,
so consider double checking the results before pushing your code to production.
License
Licensed under either of Apache License 2.0 or MIT license at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this crate by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
Donations
If you appreciate my work and want to support me or speed up the project development, you can do it here or support this project at Open Collective.
Contributors
Code Contributors
This project exists thanks to all the people who contribute.
Financial Contributors
Become a financial contributor and help us sustain our community.
Individuals
Organizations
Support this project with your organization. Your logo will show up here with a link to your website.